from selenium import webdriver
from selenium.webdriver.common.by import By

'''
在 Selenium 中，get 方法在网页框架加载结束后才会结束执行，如果我们尝试在 get 方法执行完毕时获取网页源代码,
其结果可能并不是浏览器完全加载完成的页面,因为某些页面有额外的 Ajax 请求，页面还会经由 JavaScript 渲染。
所以，在必要的时候，我们需要设置浏览器延时等待一定的时间，确保节点已经加载出来。
这里等待方式有两种： 一种是隐式等待，一种是显式等待
'''

# 隐式等待
'''
使用隐式等待执行测试时，如果Selenium没有在DOM中找到节点，将继续等待，在超出设定时间后，抛出找不到节点的异常。
换句话说，在查找节点而节点没有立即出现时，隐式等待会先等待一段时间再查找 DOM，默认的等待时间是0。
'''
browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get('https://spa2.scrape.center/')
input = browser.find_element(By.CLASS_NAME, 'logo-image')
print(input)

# 隐式等待的效果其实并不好，因为我们只规定了一个固定时间，而页面的加载时间会受网络条件影响